Pular para o conteúdo principal

Flow

Introdução

A funcionalidade de criação de ferramentas de fluxo permite aos usuários desenvolver e gerenciar processos personalizados em sua aplicação. Isso é valioso para automatizar tarefas repetitivas e melhorar a eficiência operacional. Esta funcionalidade é ideal para equipes que desejam otimizar fluxos de trabalho e garantir consistência nos processos.

Primeiros Passos

Para começar a criar uma ferramenta de fluxo, acesse a URL: https://sai-library.saiapplications.com/designer. Certifique-se de estar logado no sistema com as permissões adequadas.

Procedimento

Passo 1: Acessar a Opção Nova Ferramenta

  1. Navegue até a seção "Ferramentas Criadas".
  2. Clique no botão de criar nova ferramenta.

Acessar a Opção Nova Ferramenta

Passo 2: Inserir Nome da Ferramenta

  1. No campo visível, digite "My New Tool".
  2. Clique no botão de confirmar para salvar.

Inserir Nome da Ferramenta

Passo 3: Selecionar Tipo de Template

  1. Clique no seletor de tipo.
  2. Escolha a opção "Flow" no menu suspenso.

Selecionar Tipo de Template

Passo 4: Adicionar Descrição

  1. No campo "Descrição", digite "This is a test description".

Adicionar Descrição

Passo 5: Revisar Seção Geral

Revise a seção "Geral" para confirmar que as informações estão corretas. Aqui você pode definir a categoria e o formato de saída.

Revisar Seção Geral

Passo 6: Configurar Seção de Entradas

Adicione novas entradas conforme necessário para personalizar como a ferramenta receberá dados.

Configurar Seção de Entradas

Passo 7: Configurar Seção de Fluxo

Utilize os blocos de fluxo para definir a lógica do seu processo. Os blocos de fluxo permitem criar workflows automatizados sofisticados.

Configurar Seção de Fluxo

Blocos de Fluxo Disponíveis:

If — Condicional

Executa código JavaScript para decidir entre dois caminhos: True ou False.

  • Input: Dados recebidos do bloco anterior.
  • Código JS: Deve retornar true ou false.
  • True / False: Saídas que direcionam a continuidade do fluxo.

Use quando for necessário validar valores, comparar estados ou controlar bifurcações do fluxo, como sempre se fez em lógica clássica.

🔁 Iterate — Iteração de Coleção

Percorre uma lista (array) item por item, executando os blocos conectados internamente.

  • Collection: A lista a ser percorrida.
  • Item Variable Name: Nome da variável que representa cada item da lista.
  • Item Output: Expõe o item atual para os blocos seguintes.

Ideal para repetir ações sobre uma coleção de dados.

🔧 Call Tool — Chamar Ferramenta

Executa uma ferramenta registrada no sistema, como APIs internas, prompts ou funções personalizadas.

  • Block Name: Nome simbólico do bloco.
  • Select Tool: Ferramenta a ser executada.
  • Input: Dados enviados para a ferramenta.
  • Output: Resultado retornado pela ferramenta.

Mantém a tradição de delegar trabalho a módulos bem definidos.

✏️ Set Variable — Definir Variável

Cria ou altera uma variável de fluxo.

  • Variable Name: Nome da variável.
  • Variable Value: Valor atribuído.
  • Output: Variável resultante.

Usado para armazenar estados, resultados intermediários ou preparar dados para etapas futuras.

🟨 Execute JS — Executar JavaScript

Executa código JavaScript arbitrário dentro do fluxo.

  • Input / Output: Dados de entrada e saída do comando.
  • Uso: Transformações, cálculos e lógicas que exigem maior flexibilidade.

Fluxo de Execução

A sequência na qual os blocos são executados é determinada por suas portas de entrada e saída.

Cada conexão a uma porta de entrada de um bloco pode ser vista como uma pré-condição que deve ser satisfeita antes que o bloco possa executar. Nos casos em que um bloco tem múltiplas conexões de entrada, todos os blocos conectados devem executar primeiro antes que o bloco atual possa prosseguir.

Qualquer bloco sem uma conexão de entrada será agendado para executar imediatamente quando o fluxo começar, permitindo que múltiplos blocos executem simultaneamente.

Exemplo de ordem de execução:

  1. Ao iniciar o fluxo, ambos os blocos a e b executarão simultaneamente
  2. Uma vez que a e b tenham sido concluídos, c executará
  3. Após a conclusão de c, d executará
  4. Subsequente à conclusão de d, ambos e e f executarão
  5. O fluxo será concluído quando não houver blocos restantes para executar

Condições

No design de fluxo, pode haver instâncias onde é necessário executar certos blocos com base em condições. Isso pode ser alcançado através da utilização do bloco if, que permite a avaliação de uma string como código JavaScript.

  • Se o código avaliar como true, apenas os blocos conectados à porta True são executados.
  • Por outro lado, se a avaliação resultar em false, a execução será restrita aos blocos conectados à porta False.

Iterações

O bloco Iterate permite processar cada elemento em uma lista executando ações neles um de cada vez. Ele aceita entrada como uma string separada por vírgulas ou um array JSON.

Campos:

  • Collection: A lista a ser percorrida, suportando sintaxe mustache.
  • Item Variable Name: O nome da variável atribuído ao item atual, que pode ser usado por blocos durante a iteração. Se dois blocos Iterate executarem ao mesmo tempo ou estiverem aninhados, cada um deve usar um nome de variável único.

Portas de Saída:

  • Item: Conecta aos blocos executados para cada item na coleção.
  • Output: Conecta aos blocos executados após todas as iterações serem concluídas.

Quando blocos são vinculados à porta Item, uma caixa delimitadora aparece ao redor deles para indicar visualmente o que será executado para cada item.


Exemplo Completo: Gerador de Oferta Inteligente

Este exemplo demonstra como criar um Gerador de Oferta Inteligente usando o tipo de ferramenta Flow.

Etapas:

  1. Criar um dossiê sobre o cliente
  2. Identificar desafios do dossiê
  3. Para cada desafio, buscar casos e soluções da Stefanini
  4. Produzir um relatório final vinculando desafios do cliente a casos e soluções da Stefanini

Implementação:

  1. Definir Entrada: Apenas o nome do cliente é necessário como entrada.

  2. Primeiro Bloco (getCompanyInfo): Adicione um bloco Call Tool definido como "SmartOffer-CompanyInformation." Esta ferramenta Prompt usa o modelo "gpt-4o-mini-search" para coletar informações sobre o cliente e gerar um dossiê. Passe a entrada do cliente usando {{ inputs.client }}.

  3. Segundo Bloco (getChallenges): Conecte a outro bloco Call Tool que extrai desafios do texto do dossiê e os produz como um array JSON. Passe a saída anterior usando {{ outputs.getCompanyInfo }}.

  4. Bloco Iterate: Conecte a um bloco Iterate com Collection definido como {{ outputs.getChallenges }} e Item Variable Name como "item".

  5. Dentro da Iteração (getCases e getSolutions): Na porta item, adicione ferramentas Request para consultar Bases de Conhecimento para casos e soluções, cada uma recebendo {{ variables.item }} como entrada.

  6. Acumular Resultados: Use um bloco Set Variable para atualizar a variável "challenges":

    {{ variables.challenges }}

    # Challenge: {{ variables.item }}
    ## Cases
    {{ outputs.getCases }}
    ## Solutions
    {{ outputs.getSolutions }}
  7. Bloco Final (getOffer): Após todas as iterações, chame uma ferramenta Prompt que gera o relatório final usando {{ inputs.client }}, {{ outputs.getCompanyInfo }} e {{ variables.challenges }}.

  8. Definir Formato de Saída: Em Set Output Format, use {{ outputs.getOffer }} para definir o resultado.

Passo 8: Configurar Controle de Acesso

Defina as permissões de acesso para a ferramenta. Escolha entre "Público" ou "Privado" e gerencie os proprietários.

Configurar Controle de Acesso

Resultado

Após completar esses passos, sua ferramenta de fluxo estará configurada e pronta para uso. Você verá a ferramenta listada na seção "Ferramentas Criadas", e poderá gerenciar suas configurações conforme necessário.